//一口气把全部输入数据读到内存中，一次分割为多行，然后处理它们。
//这个例子引入了 ReadFile 函数（来自于 io/ioutil 包）其读取指定文件的全部内容
//strings.Split 函数把字符串分割成子串的切片。
//Split	的作用与前文提到的strings.Join相反。
package gopl

import (
	"fmt"
	"io/ioutil"
	"os"
	"strings"
)

func Dup3() {
	counts := make(map[string]int)
	for _, fileName := range os.Args[1:] {
		data, err := ioutil.ReadFile(fileName)
		if err != nil {
			fmt.Fprintf(os.Stderr, "dup3:%v\n", err)
			continue
		}
		dataArr := strings.Split(string(data), "\n")
		for _, line := range dataArr {
			counts[line]++
		}
	}
	for line, n := range counts {
		fmt.Printf("%d\t%s\n", n, line)
	}
}
